package cn.iocoder.yudao.module.voice.cc.config;

import cn.iocoder.yudao.module.voice.cc.fs.FsListen;
import cn.iocoder.yudao.module.voice.cc.cache.CacheService;
import cn.iocoder.yudao.module.voice.cc.command.GroupHandler;
import cn.iocoder.yudao.module.voice.cc.tcp.TcpServer;
import cn.iocoder.yudao.module.voice.cc.websocket.WebSocketManager;
import cn.iocoder.yudao.module.voice.cc.websocket.handler.WsMonitorHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * @author 徐利民
 * @date 2023/12/20 10:37
 */
@Component
@Slf4j
public class DestroyFreeswitchBean implements DisposableBean {

    @Autowired
    private WebSocketManager webSocketManager;

    @Autowired
    private FsListen fsListen;

    @Autowired
    private GroupHandler groupHandler;

    @Autowired
    private WsMonitorHandler wsMonitorHandler;

    @Autowired
    private CacheService cacheService;
    @Autowired
    private TcpServer tcpServer;


    @Override
    public void destroy() throws Exception {
        log.info("################销毁开始#################");
        cacheService.stop();
        webSocketManager.stop();
        fsListen.stop();
        groupHandler.stop();
        wsMonitorHandler.stop();
        tcpServer.stop();
        log.info("################销毁结束#################");
    }
}
